using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
using System.Reflection;

namespace Northwind.WCF
{
	/// <summary>
	/// This derived interface exists because it's important to add these 
	/// KnownTypes to the ServiceContract, so that svcutil (esp. for Silverlight)
	/// will auto-generate the classes (so as not to require referencing the 
	/// actual .NET class library (i.e. NorthwindLibrary) which uses LINQ to SQL.
	/// 1. Derive from IObjectService and include the ServiceKnownTypeAttribute(s).
	/// 2. Run the service which uses this ServiceContract, 
	/// 3. Run svcutil.exe
	/// 4. svcutil.exe will generate new INorthwindService interface code.
	/// 5. Use that instead and reference the svcutil.exe from a separate class library, which
	/// can now be referenced by both the service and the client.
	/// </summary>
	[ServiceContract]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.OrderCollection))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.OrderCollection[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.SequencedObject))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.SequencedObject[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.CustomerKey))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.CustomerKey[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.ProductKey))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.ProductKey[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Product))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Product[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Customer))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Customer[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Shipper))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Shipper[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Supplier))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Supplier[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Category))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Category[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Employee))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Employee[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Order))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Model.Order[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Security.SecurityHandle))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Security.SecurityHandle[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Security.SecureString))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Security.SecureString[]))]	
		
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Security.PermissionTypeEnum))]	
	[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Northwind.SL.Security.PermissionTypeEnum[]))]	
		
	public interface INorthwindService : IClientAccessPolicy
	{
		[OperationContract]
		object[] GetObjects2147483647();
	}//end interface

}

